#ifndef GAMEOBJECT_H
#define GAMEOBJECT_H

#include "File.h"
#include "OOBB.h"
#include "Sphere.h"

#include <map>
#include <string>

class GameObject
{
public:
	GameObject();

	virtual ~GameObject() {}
	
	virtual bool Load(File*) {return true;}
	virtual void Draw() = 0;
	virtual void DrawDebug() {}
	virtual void DrawMiniMapElements() {}
	virtual void DrawMiniMapColourPick() {}
	virtual void DrawColourPick() {}
	virtual void Update() = 0;
	virtual const char* GetTypeName() const = 0;

	virtual void SetDraw(bool b) {m_drawing = b;}
	virtual bool GetDraw() {return m_drawing;}

	virtual void Reset() {};

	OOBB3& GetOOBB3();
	
protected:
	bool m_drawing;
	OOBB3 m_oobb3;
};

typedef std::map<int, GameObject*> GameObjectMap;

#endif //GAMEOBJECT_H